<?php

App::import('Vendor','PHPExcel',array('file' => 'excel/PHPExcel.php')); 
App::import('Vendor','PHPExcelWriter',array('file' => 'excel/PHPExcel/Reader/Excel5.php'));
 
class UsersController extends AppController {

	var $name = 'Users';
	var $helpers 	= array('Javascript','Ajax'); 
	var $components = array('RequestHandler');
	var $uses = array("User","Grupo","Iglesia","Oficio","Comuna","Sector","Rol","Tipogrupo","Tiporol");
	var $transactional = true;

	function loadFormGrid(){
		$response = array(
			"response"=>array(
				"error"=>false,
				"errorThread"=>"",
				"errorTitle"=>"",
				"showErrorThread"=>false,
				"type"=>"view", 
				"data"=>$this->render("afx/grid"),
				"title"=>"Usuarios"
			)
		);
		$this->outJson($response);
	}
	function loadGrid(){
		$this->autoRender = false;
		if(!empty($_POST['page']))
			$page = $_POST['page'];
		else	$page = 1;

		if(!empty($_POST['rp']))
			$rp = $_POST['rp'];
		else	$rp = 10;

		$start = (($page-1) * $rp);
		$limit = $start. ", ". $rp;

		if(!empty($_POST['sortname'])):
			$sortname = $_POST['sortname'];
			$sortorder = " " . $_POST['sortorder'];
		else:
			$sortname = 'user.apellido1';
			$sortorder = " desc ";
		endif;
		$likecondicion = "";
		if(!empty($_POST['query'])):
			$query = $_POST['query'];
			$qtype = $_POST['qtype'];
			$likecondicion = "{$qtype} LIKE '%{$query}%'";
		else:	
			$query = null;
			$qtype = "created";
		endif;	

		$orden = $sortname . $sortorder;
		$id = 0;
		$elements="";
		$count = $this->User->getCountGrid($likecondicion);
		$users = $this->User->getUsersGrid($orden,$limit,$likecondicion);
		$data = array();	
		if(!empty($users)):
			foreach($users as $user):
				$elements[] = array(
					"id"	=>	$user["user"]["id"],
					"cell"	=>	array(
									$user["user"]["id"],
									$user["user"]["rut"],
									$user["user"]["nombre1"],
									$user["user"]["nombre2"],
									$user["user"]["apellido1"],
									$user["user"]["apellido2"],
									$user["user"]["sexo"],
									$user["iglesia"]["nombre"],
									$user["user"]["direccion"],
									$user["sector"]["nombre"],
									$user["user"]["fono_fijo"],
									$user["user"]["fono_movil"],
									$user["user"]["email"],
									$user["user"]["created"],
									$user["user"]["modified"]
								)
					);
			endforeach;
			$data = array('page'	=>	$page,'total'	=>	$count,'rows'	=>	$elements);			
		else:
			$data =array('page'	=>	$page,
						'total'	=>	'0',
						'rows'	=>	array(
									"id"	=>	'0',
									"cell"	=>	array('-','-','-','-','-')
								)
					);		
		endif;
		$this->outJson($data);
	}
	function loadFormNuevoUsuario(){
		$iglesias = $this->Iglesia->find('all',array(
						'fields' => array('Iglesia.nombre','Iglesia.id'),
						'recursive' => -1
					)
		);
		$comunas = $this->Comuna->find('all',array(
						'fields' => array('Comuna.nombre','Comuna.id'),
						'order'=>"Comuna.nombre ASC",
						'recursive' => -1
					)
		);
		//cargamos inicialmente los sectores de Valdivia
		$sectores = $this->Sector->find('all',array(
						'conditions'=>array(
							"Sector.comuna_id"=>"14101"
						),
						'fields' => array('Sector.nombre','Sector.id'),
						'recursive' => -1
					)
		);
		$oficios = $this->Oficio->find('all',array(
						'fields' => array('Oficio.nombre','Oficio.id'),
						'recursive' => -1
					)
		);
		$this->set("iglesias",$iglesias);
		$this->set("oficios",$oficios);
		$this->set("comunas",$comunas);
		$this->set("sectores",$sectores);
		$html = $this->render("afx/nuevo");
		$response = array(
			"response"=>array(
				"error"=>false,
				"errorThread"=>"",
				"errorTitle"=>"",
				"showErrorThread"=>false,
				"type"=>"view", 
				"data"=>$html,
				"title"=>"Nuevo Usuario"
			)
		);
		$this->outJson($response);
	}
	function loadEditForm(){
		$error = true;
		$html = "";
		$title = "Error en la operación";
		$mensaje = "No se puede editar el Usuario, verifique los datos.";
		if(!empty($_POST["id"]) && intval($_POST["id"])>0):
			$id = $_POST["id"];
			$user = $this->User->find('first',array(
							'conditions'=>array(
								"User.id"=>$id
							),
							'recursive' => -1
						)
			);
			if(!empty($user)):
				$sectorUser =  $this->Sector->find('first',array(
								'conditions'=>array(
									"Sector.id"=>$user["User"]["sector_id"]
								),
								'recursive' => -1
							)
				);
				$comunaUser =  $this->Comuna->find('first',array(
								'conditions'=>array(
									"Comuna.id"=>$sectorUser["Sector"]["comuna_id"]
								),
								'recursive' => -1
							)
				);
				
				$iglesias = $this->Iglesia->find('all',array(
								'fields' => array('Iglesia.nombre','Iglesia.id'),
								'recursive' => -1
							)
				);
				$comunas = $this->Comuna->find('all',array(
								'fields' => array('Comuna.nombre','Comuna.id'),
								'order'=>"Comuna.nombre ASC",
								'recursive' => -1
							)
				);
				//cargamos inicialmente los sectores de Valdivia
				$sectores = $this->Sector->find('all',array(
								'conditions'=>array(
									"Sector.comuna_id"=>"14101"
								),
								'fields' => array('Sector.nombre','Sector.id'),
								'recursive' => -1
							)
				);
				$oficios = $this->Oficio->find('all',array(
								'fields' => array('Oficio.nombre','Oficio.id'),
								'recursive' => -1
							)
				);
				$this->set("iglesias",$iglesias);
				$this->set("oficios",$oficios);
				$this->set("comunas",$comunas);
				$this->set("sectores",$sectores);
				
				$this->set("comunaUser",$comunaUser);
				$this->set("user",$user);
				$error = false;
				$html = $this->render("afx/nuevo");
			else:
				$mensaje = "El User en cuestión no existe.";
			endif;
		else:
			$mensaje = "El identificador de Grupos es inválido.";
		endif;		
		$response = array(
					"response"=>array(
						"error"=>$error,
						"showErrorThread"=>false,
						"type"=>"view", 
						"data"=>$html,
						"title"=>$title,
						"mensaje"=>$mensaje
					)
				);
		$this->outJson($response);
	}
	function save(){
		$title = "Error en la Operación";
		$mensaje = "No se pudo guardar el Usuario, revise los siguientes campos.";
		$error = true;
		$invalidFields = "";
		$data="";
		
		if(empty($this->data["User"]["id"]))://nuevo aqui
			$this->User->begin();
			if($this->User->save($this->data)):
				//aqui creamos el username y password dependiendo del ID de tabla
				$this->data["User"]["id"] = $this->User->id;
				$this->User->read();
				$this->data["User"]["username"] = "u".$this->User->id;
				$this->data["User"]["password"] = rand(0000, 9999).rand(0000, 9999).rand(0000, 9999).rand(0000, 9999);
				if($this->User->save($this->data)):
					$data = $this->User->id;
					$error = false;
					$title = "Operación Exitosa";
					$mensaje = "El nuevo usuario ha sido creado con éxito";
					$this->User->commit();
				else:
					$this->User->rollback();
					$invalidFields = $this->User->invalidFields();
				endif;	
			else:
				$this->User->rollback();
				$invalidFields = $this->User->invalidFields();
			endif;
		else://editar user aqui
			$id = $this->data["User"]["id"];
			$user = $this->User->find('first',array(
								'conditions'=>array(
									"User.id"=>$id
								),
								'recursive' => -1
							)
			);
			if(!empty($user)):
				if($this->User->save($this->data)):
					$error = false;
					$title = "Operación Exitosa";
					$mensaje = "El Usuario ha sido modificado con éxito";
					$data = $this->User->id;
				else:
					$invalidFields = $this->Grupo->invalidFields();
				endif;
			else:
				$mensaje = "El Usuario a modificar no existe.";
			endif;
		endif;
		$response = array(
			"response"=>array(
				"error"=>$error,
				"showErrorThread"=>false,
				"type"=>"result", 
				"data"=>$data,
				"title"=>$title,
				"mensaje"=>$mensaje,
				"invalidFields"=>$invalidFields
			)
		);
		$this->outJson($response);
	}
	function del(){
		$title = "Error en la Operación";
		$mensaje = "No se pudo eliminar el Usuario, revise los siguientes campos.";
		$error = true;
		$invalidFields = "";
		$data="";
		if(!empty($_POST["id"]) && intval($_POST["id"])>0):
			$id = $_POST["id"];
			$user = $this->User->find('first',array(
								'conditions'=>array(
									"User.id"=>$id
								),
								'recursive' => -1
							)
			);
			if(!empty($user)):
				if($this->User->delete($id,true)):
					$error = false;
					$title = "Operación Exitosa";
					$mensaje = "El Usuario ha sido eliminado con éxito";
				else:
					$invalidFields = $this->User->invalidFields();
				endif;
			else:
				$mensaje = "El Usuario en cuestión no existe.";
			endif;	
		else:
			$mensaje = "El identificador de Usuario no es válido";
		endif;	
		$response = array(
				"response"=>array(
					"error"=>$error,
					"showErrorThread"=>false,
					"type"=>"result", 
					"title"=>$title,
					"mensaje"=>$mensaje,
					"invalidFields"=>$invalidFields
				)
			);
		$this->outJson($response);
	}
	function loadFormDetalle($id=null){
		$response = array();
		$procesosListos = array();
		$data = array();
		$hoy = strtotime(date("Y-m-d"));
		if(!empty($_POST["id"]) && intval($_POST["id"])>0):
			$id = $_POST["id"];
			$user = $this->User->find('first',array(
							'conditions'=>array(
								"User.id"=>$id
							),
							'recursive' => -1
						)
			);
			if(!empty($user)):
				$iglesia = $this->Iglesia->find('first',array(
							'conditions'=>array(
								"Iglesia.id"=>$user["User"]["iglesia_id"]
							),
							'fields' => array('Iglesia.nombre',"Iglesia.comuna_id"),
							'recursive' => -1
						)
				);
				$comunaIglesia = $this->Comuna->find('first',array(
							'conditions'=>array(
								"Comuna.id"=>$iglesia["Iglesia"]["comuna_id"]
							),
							'fields' => array('Comuna.nombre'),
							'recursive' => -1
						)
				);
				$sector = $this->Sector->find('first',array(
							'conditions'=>array(
								"Sector.id"=>$user["User"]["sector_id"]
							),
							'fields' => array('Sector.nombre',"Sector.comuna_id"),
							'recursive' => -1
						)
				);
				$comunaSector = $this->Comuna->find('first',array(
							'conditions'=>array(
								"Comuna.id"=>$sector["Sector"]["comuna_id"]
							),
							'fields' => array('Comuna.nombre'),
							'recursive' => -1
						)
				);
				$oficio = $this->Oficio->find('first',array(
							'conditions'=>array(
								"Oficio.id"=>$user["User"]["oficio_id"]
							),
							'fields' => array('Oficio.nombre'),
							'recursive' => -1
						)
				);
				//obtenemos todos los roles del usuario
				$roles = $this->Rol->find('all',array(
							'conditions'=>array(
								"Rol.user_id"=>$id
							),
							'recursive' => -1
						)
				);
				//obtenemos su rol de discipulo
				$tipoDiscipulo = $this->Tiporol->find('first',array(
							'conditions'=>array(
								"Tiporol.nombrerol"=>"discipulo"
							),
							'recursive' => -1
						)
				);
				$tipoLider = $this->Tiporol->find('first',array(
							'conditions'=>array(
								"Tiporol.nombrerol"=>"lider"
							),
							'recursive' => -1
						)
				);
				$rolDiscipulo = $this->Rol->find('first',array(
							'conditions'=>array(
								"Rol.user_id"=>$id,
								"Rol.tiporol_id"=>$tipoDiscipulo["Tiporol"]["id"],
							),
							'recursive' => -1
						)
				);

                                $arbolGen = array();

				while(!empty($rolDiscipulo)):
					$iLider = $this->Rol->find('first',array(
							'conditions'=>array(
								"Rol.grupo_id"=>$rolDiscipulo["Rol"]["grupo_id"],
								"Rol.tiporol_id"=>$tipoLider["Tiporol"]["id"],
							),
							'recursive' => -1
						)
					);
					$tmp = $this->User->find('first',array(
							'conditions'=>array(
								"User.id"=>$iLider["Rol"]["user_id"],
							),
							'recursive' => -1
						)
					);
					$rolDiscipulo = $this->Rol->find('first',array(
							'conditions'=>array(
								"Rol.user_id"=>$iLider["Rol"]["user_id"],
								"Rol.tiporol_id"=>$tipoDiscipulo["Tiporol"]["id"],
							),
							'recursive' => -1
						)
					);
					if(!empty($tmp))
						$arbolGen[] = $tmp;
				endwhile;
				
				//aqui obtenemos el id de todos los procesos formadores de la iglesia
				foreach($this->procesosFormadores as $nombreTipoGrupo):
					$tmp = $this->Tipogrupo->find('first',array(
							'conditions'=>array("Tipogrupo.nombretipo"=>$nombreTipoGrupo),
							'fields'=>array("Tipogrupo.id"),
							'recursive' => -1));
					$procesosListos[] = array(
						"tipoGrupoId"=>$tmp["Tipogrupo"]["id"],
						"tipoGrupoNombre"=>$nombreTipoGrupo,
						"procesoListo"=>"N" //si, no, cursandolo (S,N,C)
					);
				endforeach;
				$nProcesos = count($procesosListos);
				foreach($roles as $rol):
					$grupo = $this->Grupo->find('first',array(
							'conditions'=>array(
								"Grupo.id"=>$rol["Rol"]["grupo_id"]
							),
							'fields' => array(
								'Grupo.id',
								"Grupo.iglesia_id",
								"Grupo.sector_id",
								"Grupo.tipogrupo_id",
								"Grupo.nombre",
								"Grupo.direccion",
								"Grupo.dia_reunion",
								"Grupo.hora_reunion",
								"Grupo.fecha_inicio",
								"Grupo.fecha_termino",
							),
							'recursive' => -1
						)
					);
					$iglesiaGrupo = $this->Iglesia->find('first',array(
							'conditions'=>array(
								"Iglesia.id"=>$grupo["Grupo"]["iglesia_id"]
							),
							'fields' => array('Iglesia.nombre',"Iglesia.comuna_id"),
							'recursive' => -1
						)
					);
					$comunaIglesiaGrupo = $this->Comuna->find('first',array(
								'conditions'=>array(
									"Comuna.id"=>$iglesiaGrupo["Iglesia"]["comuna_id"]
								),
								'fields' => array('Comuna.nombre'),
								'recursive' => -1
							)
					);
					$sectorGrupo = $this->Sector->find('first',array(
								'conditions'=>array(
									"Sector.id"=>$grupo["Grupo"]["sector_id"]
								),
								'fields' => array('Sector.nombre',"Sector.comuna_id"),
								'recursive' => -1
							)
					);
					$comunaSectorGrupo = $this->Comuna->find('first',array(
								'conditions'=>array(
									"Comuna.id"=>$sectorGrupo["Sector"]["comuna_id"]
								),
								'fields' => array('Comuna.nombre'),
								'recursive' => -1
							)
					);
					$tipoGrupo = $this->Tipogrupo->find('first',array(
							'conditions'=>array(
								"Tipogrupo.id"=>$grupo["Grupo"]["tipogrupo_id"]
							),
							'fields'=>array("Tipogrupo.nombre","Tipogrupo.id","Tipogrupo.duracion"),
							'recursive' => -1
						)
					);
					$fin = strtotime($grupo["Grupo"]["fecha_termino"]);
					$ini = strtotime($grupo["Grupo"]["fecha_inicio"]);
					$i=0;
					//validamos cada proceso si se ha concluido de los grupos
					while($i<$nProcesos):
						if($procesosListos[$i]["tipoGrupoId"] == $tipoGrupo["Tipogrupo"]["id"]):
							if($ini < $hoy):
								if($fin<$hoy)://ya termino el proceso, lo ha terminado S
									$procesosListos[$i]["procesoListo"] = "S";
								elseif($hoy<$fin)://aun no termina, esta cursandolo C
									$procesosListos[$i]["procesoListo"] = "C";
								endif;
								$i=	$nProcesos;
							endif;
						endif;		
						$i++;
					endwhile;
					//obtenemos el arbol genealogico de la persona, una persona solo debe star en una celulaon
					
					$tipoRol = $this->Tiporol->find('first',array(
							'conditions'=>array(
								"Tiporol.id"=>$rol["Rol"]["tiporol_id"]
							),
							'fields'=>array("Tiporol.nombre"),
							'recursive' => -1
						)
					);
					$finalizado = false;
					$tipo = "actual";
					
					if($grupo["Grupo"]["fecha_inicio"] == "0000-00-00 00:00:00")://grupo tipo celula
						$grupo["Grupo"]["fecha_inicio"] = "-";
						$grupo["Grupo"]["fecha_termino"] = "-";
						$tipo = "actual";
					else://grupo con fechas de termino
						if ($fin < $hoy)://grupos ya finalizados
						    $tipo = "pasado";
						elseif($ini < $hoy && $hoy<$fin):
							$tipo = "actual";
						elseif($hoy <$ini):
							$tipo = "futuro";	
						endif;
					endif;
					$data[$tipo][] = array(
						"nombreRol"=>$tipoRol["Tiporol"]["nombre"],
						"nombreGrupo"=>$tipoGrupo["Tipogrupo"]["nombre"],
						"iglesiaGrupo"=>$iglesiaGrupo["Iglesia"]["nombre"],
						"comunaIglesiaGrupo"=>$comunaIglesiaGrupo["Comuna"]["nombre"],
						"sectorGrupo"=>$sectorGrupo["Sector"]["nombre"],
						"comunaSectorGrupo"=>$comunaSectorGrupo["Comuna"]["nombre"],
						"grupo"=>$grupo["Grupo"],
						"duracion"=>$tipoGrupo["Tipogrupo"]["duracion"]
					);
				endforeach;
				$this->set("iglesia",$iglesia);
				$this->set("oficio",$oficio);
				$this->set("comunaIglesia",$comunaIglesia);
				$this->set("comunaSector",$comunaSector);
				$this->set("sector",$sector);
				$this->set("user",$user);
				$this->set("data",$data);
				$this->set("procesos",$procesosListos);
				$this->set("arbolGen",$arbolGen);
				$html = $this->render("afx/detalle");
				$response = array(
					"response"=>array(
						"error"=>false,
						"type"=>"view", 
						"data"=>$html,
						"title"=>"Detalle Usuario"
					)
				);
			else:
				$response = array(
					"response"=>array(
						"error"=>true,
						"type"=>"view", 
						"title"=>"Parámetros inválidos",
						"mensaje"=>"El Usuario no existe."
					));
			endif;
		else:
			$response = array(
				"response"=>array(
					"error"=>true,
					"showErrorThread"=>false,
					"type"=>"view", 
					"title"=>"Parámetros inválidos",
					"mensaje"=>"El Identificador de Usuario es inválido"
				));
		endif;	
		$this->outJson($response);
	}
	function loadTreeView(){
		$html = $this->render("arbol");
		$response = array(
			"response"=>array(
				"error"=>false,
				"type"=>"view", 
				"data"=>$html,
				"title"=>"Detalle Usuario"
			)
		);
		$this->outJson($response);
	}
	function loadTree(){
		$response = array();
		$data = array();
		$tlider = $this->Tiporol->find('first',array(
							'conditions'=>array(
								"Tiporol.nombrerol"=>'lider'
							),
							'recursive' => -1
						)
		);
		$tdiscipulo = $this->Tiporol->find('first',array(
						'conditions'=>array(
							"Tiporol.nombrerol"=>'discipulo'
						),
						'recursive' => -1
					)
		);
		$tcelula = $this->Tipogrupo->find('first',array(
						'conditions'=>array(
							"Tipogrupo.nombretipo"=>'celula'
						),
						'recursive' => -1
					)
		);
		$rootUser = array();
		if(!empty($_POST["id"]) && intval($_POST["id"])>0):
			$id = $_POST["id"];
			$rootUser = $this->User->find('first',array(
							'conditions'=>array(
								"User.id"=>$id
							),
							'recursive' => -1
						)
			);
		else:
			$rootUser = $this->User->find('first',array(
							'conditions'=>array(
								"User.root"=>'S'
							),
							'recursive' => -1
						)
			);
		endif;	
		if(!empty($rootUser)):
			$roles = $this->Rol->find('all',array(
							'conditions'=>array(
								"Rol.tiporol_id"=>$tlider["Tiporol"]["id"],
								"Rol.user_id"=>$rootUser["User"]["id"]
							),
							'recursive' => -1
						)
			);
			//obtenemos el grupo de celula asociado
			$grupo=array();
			$discipulos=array();
			foreach($roles as $rol):
				$grupo = $this->Grupo->find('first',array(
							'conditions'=>array(
								"Grupo.tipogrupo_id"=>$tcelula["Tipogrupo"]["id"],
								"Grupo.id"=>$rol["Rol"]["grupo_id"]
							),
							'recursive' => -1
						)
				);
				if(!empty($grupo))
					break;
			endforeach;
			
			$miembros = $this->Rol->find('all',array(
							'conditions'=>array(
								"Rol.grupo_id"=>$grupo["Grupo"]["id"],
								"Rol.tiporol_id"=>$tdiscipulo["Tiporol"]["id"]
							),
							'recursive' => -1
						)
			);
			foreach($miembros as $miembro):
				$tmp = $this->User->find('first',array(
								'conditions'=>array(
									"User.id"=>$miembro["Rol"]["user_id"]
								),
								'recursive' => -1,
								'fields'=>array(
									"User.id",
									"User.nombre1",
									"User.nombre2",
									"User.apellido1",
									"User.apellido2",
									"User.email",
									"User.fono_movil",
									"User.fono_fijo",
								 	"User.direccion",
								 	"User.avatar"
								)
							)
				);
				$discipulos[] = array(
					"id"=>$tmp["User"]["id"],
					"name"=>$tmp["User"]["nombre1"]." ".$tmp["User"]["apellido1"],
					"data"=>array(
						"nombre"=>$tmp["User"]["nombre1"]." ".$tmp["User"]["nombre2"]." ".$tmp["User"]["apellido1"]." ".$tmp["User"]["apellido2"],
						"email"=>$tmp["User"]["email"],
						"fono_fijo"=>$tmp["User"]["fono_fijo"],
						"fono_movil"=>$tmp["User"]["fono_movil"],
						"direccion"=>$tmp["User"]["direccion"],
						"avatar"=>$tmp["User"]["avatar"]
					)
				);
			endforeach;
			$data = array(
				"id"=>$rootUser["User"]["id"],
				"name"=>$rootUser["User"]["nombre1"]." ".$rootUser["User"]["apellido1"],
				"children"=>$discipulos
			);
		else:
			$data="";	
		endif;	
		$this->outJson($data);
	}
	function loadFormEditarUsuario($id=null){
	}
	function loadExcelFileUsers(){
		$this->outDebug();
		//$this->autoRender = false;
		
		/* archivo normal bdgyp
		$columnas[0] = 'B'; //nombre1
		$columnas[1] = 'C'; //nombre2
		$columnas[2] = 'D'; //ap1
		$columnas[3] = 'E'; //ap2
		$columnas[4] = 'F'; //femenino
		$columnas[5] = 'G'; //masculino
		$columnas[6] = 'O'; //rut
		$columnas[7] = 'P'; //dia nac. dd
		$columnas[8] = 'Q'; //mes nac. mm
		$columnas[9] = 'R'; //año nac. yyyy
		$columnas[10] = 'T'; //oficio
		$columnas[11] = 'U'; //ciudad
		$columnas[12] = 'V'; //direccion
		$columnas[13] = 'W'; //email
		$columnas[14] = 'X'; //fono_fijo
		$columnas[15] = 'Y'; //fono_movil
		$columnas[16] = 'AL'; //bautizado si
		$columnas[17] = 'AM'; //bautizado no
		*/
		$columnas[0] = 'B'; //nombre1
		$columnas[1] = 'C'; //nombre2
		$columnas[2] = 'D'; //ap1
		$columnas[3] = 'E'; //ap2
		$columnas[4] = 'F'; //femenino
		$columnas[5] = 'G'; //masculino
		$columnas[6] = 'V'; //rut
		$columnas[7] = 'W'; //dia nac. dd
		$columnas[8] = 'X'; //mes nac. mm
		$columnas[9] = 'Z'; //año nac. yyyy
		$columnas[10] = 'AA'; //oficio
		$columnas[11] = 'AB'; //ciudad
		$columnas[12] = 'AC'; //direccion
		$columnas[13] = 'AD'; //email
		$columnas[14] = 'AE'; //fono_fijo
		$columnas[15] = 'AF'; //fono_movil
		$columnas[16] = 'AS'; //bautizado si
		$columnas[17] = 'AT'; //bautizado no
		
		
		$nombre1="";
		$nombre2="";
		$apellido1="";
		$apellido2="";
		$sexo="";
		$rut="";
		$dia="";
		$mes="";
		$anio="";
		$oficio="";
		$ciudad="";
		$direccion="";
		$email="";
		$fonoFijo="";
		$fonoMovil="";
		$bautizo="";
		
		
		
		
		$objReader = new PHPExcel_Reader_Excel5();
		$objPHPExcel = $objReader->load("files/bd400.xls");
		$objWorksheet = $objPHPExcel->getActiveSheet();
		$n = $objWorksheet->getHighestRow();
		
		$data=array();
		$nc = count($columnas);
		$oficios = array();
		for($i=1; $i<=$n; $i++):
			for($j=0; $j< 18; $j++):
				$cell = $objWorksheet->getCell($columnas[$j].$i);
				$cellData = PHPExcel_Style_NumberFormat::toFormattedString(
					$cell->getCalculatedValue(),
					$objPHPExcel->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode()
				);
				$k = $i-1;
				if($j==0):		$this->data[$k]["User"]["nombre1"] = $cellData; 
					elseif($j==1):	$this->data[$k]["User"]["nombre2"] = $cellData;
					elseif($j==2):	$this->data[$k]["User"]["apellido1"] = $cellData;
					elseif($j==3):	$this->data[$k]["User"]["apellido2"] = $cellData;
					elseif($j==4 && $cellData == "1"):	$this->data[$k]["User"]["sexo"] = "F";
					elseif($j==5  && $cellData == "1"):	$this->data[$k]["User"]["sexo"] = "M";
					elseif($j==6):	$this->data[$k]["User"]["rut"] = $cellData;
					elseif($j==7):	$dia = $cellData;
					elseif($j==8):	$mes = $cellData;
					elseif($j==9):	$anio = $cellData;
					elseif($j==10):	$oficios[] = $cellData;
					elseif($j==11):	$ciudad = $cellData;
					elseif($j==12):	$this->data[$k]["User"]["direccion"] = $cellData;
					elseif($j==13):	$this->data[$k]["User"]["email"] = $cellData;						
					elseif($j==14):	$this->data[$k]["User"]["fono_fijo"] = $cellData;
					elseif($j==15):	$this->data[$k]["User"]["fono_movil"] = $cellData;
					elseif($j==16  && $cellData == "1"):	$this->data[$k]["User"]["bautizado"] = "S";
					elseif($j==17 && $cellData == "1"):	$this->data[$k]["User"]["bautizado"] = "N";
				endif;
				
				$oficios[] = $oficio;
				
				$this->data[$k]["User"]["fechanacimiento"] = $anio."-".$mes."-".$dia;	
				$this->data[$k]["User"]["iglesia_id"] = "1";
				$this->data[$k]["User"]["oficio_id"] = "1";
				$this->data[$k]["User"]["sector_id"] = "8";
			endfor;
		endfor;
		$ni = 0;
		foreach($this->data as $user):
			$this->User->begin();
			$this->User->create();
			if($this->User->save($user)):
				//aqui creamos el username y password dependiendo del ID de tabla
				$user["User"]["id"] = $this->User->id;
				$this->User->read();
				$user["User"]["username"] = "u".$this->User->id;
				$user["User"]["password"] = rand(0000, 9999).rand(0000, 9999).rand(0000, 9999).rand(0000, 9999);
				if($this->User->save($user)):
					$ni++;
				else:
					break;	
				endif;
			else:
				break;		
			endif;
		endforeach;
		if($ni == count($this->data)):
			$this->User->commit();
			echo "too ok";
			print_r($oficios);
		else:
			$this->User->rollback();
			echo "errol";
		endif;	
	}
function loadExcelFileGetLideres(){
		$this->outDebug();
		//$this->autoRender = false;
		$columnas[0] = 'K'; //nombre1
		$columnas[1] = 'L'; //nombre2
		$columnas[2] = 'M'; //ap1
		$columnas[3] = 'N'; //ap2
			
		
		$nombre1="";
		$nombre2="";
		$apellido1="";
		$apellido2="";
		
		$objReader = new PHPExcel_Reader_Excel5();
		$objPHPExcel = $objReader->load("files/bdgypv2.xls");
		$objWorksheet = $objPHPExcel->getActiveSheet();
		$n = $objWorksheet->getHighestRow();
		
		$lideres=array();
		$validos=array();
		$invalidos=array();
		$errores=array();
		$tmp=array();
		for($i=4; $i<=$n; $i++):
			for($j=0; $j< 4; $j++):
				$cell = $objWorksheet->getCell($columnas[$j].$i);
				$cellData = PHPExcel_Style_NumberFormat::toFormattedString(
					$cell->getCalculatedValue(),
					$objPHPExcel->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode()
				);
				if($j==0):		$nombre1 = strtolower(trim($cellData)); 
					elseif($j==1):	$nombre2 = strtolower(trim($cellData));
					elseif($j==2):	$apellido1 = strtolower(trim($cellData));
					elseif($j==3):	$apellido2 = strtolower(trim($cellData));
				endif;
				if(empty($nombre1) || strlen($nombre1)==0)
					$nombre1 = "";
				if(empty($nombre2) || strlen($nombre2)==0)
					$nombre2 = "";
				if(empty($apellido1) || strlen($apellido1)==0)
					$apellido1 = "";
				if(empty($apellido2) || strlen($apellido2)==0)
					$apellido2 = "";
			endfor;
			$tmp[] = $nombre1."-".$nombre2."-".$apellido1."-".$apellido2;
			/*
			if(!empty($nombre1) && !empty($apellido1) && !empty($apellido2) )
				$tmp[] = $nombre1."-".$nombre2."-".$apellido1."-".$apellido2;
			else
				$errores[] = array(
					"nombre1"=>$nombre1,
					"nombre2"=>$nombre2,
					"apellido1"=>$apellido1,
					"apellido2"=>$apellido1
				);
				*/
		endfor;
		$tmp = array_unique($tmp);
		$tmp2;
		foreach($tmp as $x):
			$data = explode("-",$x);
			$tmp2[] = array(
					"nombre1"=>$data[0],
					"nombre2"=>$data[1],
					"apellido1"=>$data[2],
					"apellido2"=>$data[3]
				);
		endforeach;
		foreach($tmp2 as $userValido):
		/*
			$user = $this->User->find('first',array(
							'conditions'=>array(
								"User.nombre1"=>$userValido["nombre1"],
								"User.nombre2"=>$userValido["nombre2"],
								"User.apellido1"=>$userValido["apellido1"],
								"User.apellido2"=>$userValido["apellido2"]
							),
							'recursive' => -1
						)
			);
			if(!empty($user)):
				$n++;
				$validos[] = $user;
			else:
			$k++;
				$invalidos[] = $userValido;
			endif;	
			*/
		endforeach;
		echo "usuarios validos:  $n ";
		print_r($validos);
		echo "usuarios invalidos:   ";
		print_r($invalidos);
		
	}
	function generateAllData(){
		$this->outDebug();
		//$this->autoRender = false;
		
		/* datos de la persona*/
		$columnas[0] = 'B'; //nombre1
		$columnas[1] = 'C'; //nombre2
		$columnas[2] = 'D'; //ap1
		$columnas[3] = 'E'; //ap2
		$columnas[4] = 'F'; //femenino
		$columnas[5] = 'G'; //masculino
		$columnas[6] = 'V'; //rut
		$columnas[7] = 'W'; //dia nac. dd
		$columnas[8] = 'X'; //mes nac. mm
		$columnas[9] = 'Y'; //año nac. yyyy
		$columnas[10] = 'AA'; //oficio
		$columnas[11] = 'AB'; //ciudad
		$columnas[12] = 'AC'; //direccion
		$columnas[13] = 'AD'; //email
		$columnas[14] = 'AE'; //fono_fijo
		$columnas[15] = 'AF'; //fono_movil
		$columnas[16] = 'AS'; //bautizado si
		$columnas[17] = 'AT'; //bautizado no
		
		/* datos del lider */
		$columnas[18] = 'K'; //nombre1
		$columnas[19] = 'L'; //nombre2
		$columnas[20] = 'M'; //ap1
		$columnas[21] = 'N'; //ap2
		
		
		$nombre1="";
		$nombre2="";
		$apellido1="";
		$apellido2="";
		$sexo="";
		$rut="";
		$dia="";
		$mes="";
		$anio="";
		$oficio="";
		$ciudad="";
		$direccion="";
		$email="";
		$fonoFijo="";
		$fonoMovil="";
		$bautizo="";
		
		
		
		
		$objReader = new PHPExcel_Reader_Excel5();
		$objPHPExcel = $objReader->load("files/bdgypv2.xls");
		$objWorksheet = $objPHPExcel->getActiveSheet();
		$n = $objWorksheet->getHighestRow();
		
		$data=array();
		$nc = count($columnas);
		$oficios = array();
		$sql="";
		$emails = array();
		for($i=4; $i<=$n; $i++):
			for($j=0; $j< 21; $j++):
				$cell = $objWorksheet->getCell($columnas[$j].$i);
				$cellData = PHPExcel_Style_NumberFormat::toFormattedString(
					$cell->getCalculatedValue(),
					$objPHPExcel->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode()
				);
				$k = $i-4;
				if($j==0):		$this->data["User"]["nombre1"] = $cellData; 
					elseif($j==1):	$this->data["User"]["nombre2"] = $cellData;
					elseif($j==2):	$this->data["User"]["apellido1"] = $cellData;
					elseif($j==3):	$this->data["User"]["apellido2"] = $cellData;
					elseif($j==4 && $cellData == "1"):	$this->data["User"]["sexo"] = "F";
					elseif($j==5  && $cellData == "1"):	$this->data["User"]["sexo"] = "M";
					elseif($j==6):	$this->data["User"]["rut"] = $cellData;
					elseif($j==7):	$dia = $cellData;
					elseif($j==8):	$mes = $cellData;
					elseif($j==9):	$anio = $cellData;
					elseif($j==10):	$oficios[] = $cellData;
					elseif($j==11):	$ciudad = $cellData;
					elseif($j==12):	$this->data["User"]["direccion"] = $cellData;
					elseif($j==13):	
						$email = $cellData;
						if(empty($cellData)){
						 	$email = strtolower($this->data["User"]["nombre1"].'.'.$this->data["User"]["nombre2"].'.'.$this->data["User"]["apellido1"].'.'.$this->data["User"]["apellido2"].'@emailtemporal.com');
						}
						$this->data["User"]["email"] = $email;
												
					elseif($j==14):	$this->data["User"]["fono_fijo"] = $cellData;
					elseif($j==15):	$this->data["User"]["fono_movil"] = $cellData;
					elseif($j==16  && $cellData == "1"):	$this->data["User"]["bautizado"] = "S";
					elseif($j==17 && $cellData == "1"):	$this->data["User"]["bautizado"] = "N";
					elseif($j==18):	$nombre1 = strtolower(trim($cellData));
					elseif($j==19):	$nombre2 = strtolower(trim($cellData));
					elseif($j==20):	$apellido1 = strtolower(trim($cellData));
					elseif($j==21):	$apellido2 = strtolower(trim($cellData));
				endif;
			endfor;
			$this->data["User"]["fechanacimiento"] = $anio."-".$mes."-".$dia;	
			$this->data["User"]["iglesia_id"] = "1";
			$this->data["User"]["oficio_id"] = "1";
			$this->data["User"]["sector_id"] = "8";
			
//			$this->User->begin();
			$this->Rol->create();
			$this->Grupo->create();
			$this->User->create();
			$insertados = 0;
			
			if(!empty($this->data["User"]["nombre1"]) && !empty($this->data["User"]["apellido1"])){
				$emails[] = $this->data["User"]["email"];
				$log = date('Y-m-d H:i:s');
			
				if(!in_array($this->data["User"]["apellido1"],$emails)){
			
			
					$sql = $sql.'INSERT INTO  `iglesia`.`users` (`nombre1` ,`nombre2` ,`apellido1` ,`apellido2` ,`sexo` ,`password` ,`fono_fijo` ,
															`fono_movil` ,`UserId` ,`rut` ,`fechanacimiento` ,`direccion` ,`bautizado` ,`Log` ,
															`avatar` ,`root` ,`OficioId` ,`SectorId`)
		VALUES ("'.$this->data["User"]["nombre1"].'",  "'.$this->data["User"]["nombre2"].'",  "'.$this->data["User"]["apellido1"].'",  "'.$this->data["User"]["apellido2"].'",  "'.$this->data["User"]["sexo"].'",  "'.$this->data["User"]["password"].'",  "'.
		$this->data["User"]["fono_fijo"].'", "'.$this->data["User"]["fono_movil"].'",  "'.$this->data["User"]["email"].'",
		"'.$this->data["User"]["rut"].'", "'.$this->data["User"]["fechanacimiento"].'","'.$this->data["User"]["direccion"].'","'.
		$this->data["User"]["bautizado"].'",  "'.$log.'",  "'.$this->data["User"]["avatar"].'", "n",  "1",  "1"); </br>';
						$this->data["User"]["nombre1"] = "";
						$this->data["User"]["nombre2"] = "";
						$this->data["User"]["apellido1"] = "";
						$this->data["User"]["apellido2"] = "";
						$this->data["User"]["email"] = "";
					}

			}
			
			
			/*
			
			if($this->User->save($this->data)):
				//aqui creamos el username y password dependiendo del ID de tabla
				$user["User"]["id"] = $this->User->id;
				$this->User->read();
				$user["User"]["username"] = "u".$this->User->id;
				$user["User"]["password"] = rand(0000, 9999).rand(0000, 9999).rand(0000, 9999).rand(0000, 9999);
				if($this->User->save($user)):
					//vemos si el grupo existe con este lider
					$obs = $nombre1." ".$nombre2." ".$apellido1." ".$apellido2;
					$tmp = $this->Grupo->find('first',array(
									'conditions'=>array(
										"Grupo.observacion"=>$obs
									),
									'recursive' => -1
								)
					);
					$this->data["Rol"]["user_id"] = $this->User->id;
					$this->data["Rol"]["tiporol_id"] = 2;//discipulo
					if(empty($tmp))://si grupo no existe lo creamos
						$this->data["Grupo"]["nombre"] = "C-".$nombre1."_".$apellido1;
						$this->data["Grupo"]["observacion"] = $obs;
						$this->data["Grupo"]["tipogrupo_id"] = 1;
						$this->data["Grupo"]["iglesia_id"] = 1;
						$this->data["Grupo"]["sector_id"] = 8;
						if($this->Grupo->save($this->data)):
							$this->data["Rol"]["grupo_id"] = $this->Grupo->id;
							if($this->Rol->save($this->data)):
								$insertados++;
							endif;
						endif;
					else:	
						$this->data["Rol"]["grupo_id"] = $tmp["Grupo"]["id"];
						if($this->Rol->save($this->data)):
							$insertados++;
						endif;
					endif;
				else:
					break;	
				endif;
			else:
				break;		
			endif;
			*/
		endfor;
		
		echo utf8_decode($sql);
	}
	function arbol(){
		
	}
}
?>
